package sifcom.Entidades.Factory;

import java.io.BufferedReader;
import java.util.List;

import sifcom.Entidades.Provincia;
import sifcom.Utilidades.Utilidades;
import sifcom.json.ManejoJson;

import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.repackaged.org.json.JSONException;
import com.google.appengine.repackaged.org.json.JSONObject;
import com.googlecode.objectify.Key;

public class ProvinciaFactory {

	public ProvinciaFactory()
	{
		
	}
	
	public ProvinciaFactory(BufferedReader reader) throws JSONException, EntityNotFoundException
	{
		ObjectifyGenericDao<Provincia> daoObjectify = new ObjectifyGenericDao<Provincia>(Provincia.class);
		Utilidades util = new Utilidades();
		
		JSONObject jsonSocio = util.getJsonObject(reader);
		
			//Delete
			if(jsonSocio.length() == 1 && jsonSocio.get("id") != null)
			{
				Key<Provincia> key = new Key<Provincia>(Provincia.class, new Long(jsonSocio.get("id").toString()));
				Provincia prov = daoObjectify.get(key);
				daoObjectify.delete(prov);
			}
			
			//Create
			if(jsonSocio.length() > 1 && jsonSocio.get("id").toString().length() == 4)
			{
				Provincia prov = new Provincia();
				ManejoJson<Provincia> mson = new ManejoJson<Provincia>(Provincia.class);
				mson.setData(prov, jsonSocio);
				daoObjectify.put(prov);
			}
		
			//Update
			if(jsonSocio.length() > 1 && !jsonSocio.get("id").toString().equalsIgnoreCase("null"))
			{
				Key<Provincia> key = new Key<Provincia>(Provincia.class,jsonSocio.getLong("id"));
				Provincia prov = daoObjectify.get(key);
				ManejoJson<Provincia> mson = new ManejoJson<Provincia>(Provincia.class);
				mson.setData(prov, jsonSocio);
				daoObjectify.put(prov);				
			}
	}
	
	public String getData(){
		
		ObjectifyGenericDao<Provincia> daoObjectify = new ObjectifyGenericDao<Provincia>(Provincia.class);		
		
		List<Provincia> lst = daoObjectify.listByExample(new Provincia());
		ManejoJson<Provincia> mjson = new ManejoJson<Provincia>(Provincia.class);
		return mjson.setData(lst);
	}

	public String Search(String provincia){
		
		ObjectifyGenericDao<Provincia> daoObjectify = new ObjectifyGenericDao<Provincia>(Provincia.class);
		Provincia prov = new Provincia();
		if(provincia.length()>=1)
		prov.setProvincia(provincia);
		
		List<Provincia> lst = daoObjectify.listByExample(prov);
		ManejoJson<Provincia> mjson = new ManejoJson<Provincia>(Provincia.class);

		return mjson.setData(lst);
	}	
		
}
